import java.util.*;
 class NGuessNumber {
     public static int[] numbers=new int[4];
     public static int[] guess=new int[4];
     public static int a_num = 0;
     public static int b_num = 0;


     public static void main(String[] args) {

         System.out.println("猜数字游戏");

         while(true) {

             System.out.println("1开始游戏");
             System.out.println("0结束游戏\n");
             Scanner sc = new Scanner(System.in);

             switch (sc.nextInt()) {
                 case 0:
                     System.out.println("退出游戏\n");
                     System.exit(0);
                     break;
                 case 1:
                     int cs = 0;
                     int sy = 7;

                     System.out.println("已开始游戏");
                     System.out.println("请猜测4个不同数字");
                     generateAnswer();
                     while (true) {

                         getPlayerInput();
                         compareGuessAnswer();
                         if (isWin() == true) {
                             System.out.println("玩家获胜\n");
                             break;
                         } else {
                             cs++;
                             sy--;
                             if(cs==7){
                                 System.out.println("7次到了，正确答案为"+Arrays.toString(numbers));
                                 System.out.println("再来一次");
                                 break;
                             }
                             System.out.println("猜错了，在来一次！(还剩"+sy+"次)\n");
                         }
                     }
                     break;
                 default:
                     System.out.println("错误的输入字符，请输入0/1\n");
             }
         }
     }


     public static int[] generateAnswer() {

         int index = 0;

         while (true) {
             int random = (int) (Math.random() * 9 + 1);
             int j = 0;
             for (; j < numbers.length; j++) {
                 if (random == numbers[j]) {
                     break;
                 }
             }
             if (j == numbers.length) {
                 numbers[index++] = random;
             }
             if (index == 4) {
                 break;
             }
         }

         return numbers;
     }


     public static int[] getPlayerInput(){

         try {
             Scanner sc = new Scanner(System.in);

             for (int i = 0; i < 4; i++) {
                 System.out.println("请输入0-9之间的第" + (i+1) + "个数字：");

                 int pl = sc.nextInt();
                 if (pl >= 10 || pl < 0) {
                     System.out.print("输入错误，");
                     i=i-1;
                 }else {
                     guess[i] = pl;
                 }
             }
         }catch (Exception e){
             System.out.println("输入错误");
         }

         System.out.println(Arrays.toString(guess)+"\n");
         return guess;
     }

     public static String compareGuessAnswer(){
         a_num = 0;
         b_num = 0;
         for (int i = 0; i < numbers.length; i++) {
             for (int l=0; l < numbers.length; l++){
                 if(i!=l){
                     if(numbers[i]==guess[l]){
                         b_num++;
                     }
                 }else{
                     if(numbers[i]==guess[l]){
                         a_num++;
                     }
                 }

             }
         }

         System.out.println(a_num+"A"+b_num+"B");

         System.out.println("A表示存在且位置正确的数字个数，B表示存在且位置不正确的数字个数！");
         System.out.println("如：1A2B,表示你猜测的四个数字有3个是对的，有一个位置对，两个位置不对。\n");

         return a_num+"A"+b_num+"B\n"+"A表示存在且位置正确的数字个数，B表示存在且位置不正确的数字个数！\n"+"如：1A2B,表示你猜测的四个数字有3个是对的，有一个位置对，两个位置不对。";
     }


     public static boolean isWin(){
         boolean flag = false;

         if(a_num==4){
             flag=true;
         }else {
             flag=false;
         }
         return flag;

     }


 }